package com.chixing.util;

import java.util.Random;

/**
 * 取票码生成工具类
 * 生成8位取票码，要求包含至少1个字母（不全是数字）
 */
public class TicketCodeUtils {
    // 字符集：数字 + 大小写字母（确保包含非数字字符）
    private static final String CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    private static final int CODE_LENGTH = 8; // 固定8位长度
    private static final Random RANDOM = new Random();

    /**
     * 生成符合要求的取票码
     */
    public static String generateTicketCode() {
        String ticketCode;
        do {
            // 随机生成8位字符
            StringBuilder codeBuilder = new StringBuilder();
            for (int i = 0; i < CODE_LENGTH; i++) {
                int index = RANDOM.nextInt(CHARSET.length());
                codeBuilder.append(CHARSET.charAt(index));
            }
            ticketCode = codeBuilder.toString();
        } while (isAllDigits(ticketCode)); // 循环校验，确保不全是数字
        return ticketCode;
    }

    /**
     * 校验字符串是否全为数字
     */
    private static boolean isAllDigits(String str) {
        for (char c : str.toCharArray()) {
            if (!Character.isDigit(c)) {
                return false; // 存在非数字字符，返回false
            }
        }
        return true; // 全是数字，返回true
    }
}